package com.lianboke.link.ad.services;


import android.app.Service;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;

import com.lianboke.link.ad.location.LocationBean;
import com.lianboke.link.ad.utils.KLog;

/**
 * 定位服务
 */
public class LocationSvc extends Service implements LocationListener {
  
    private LocationManager locationManager;  
  
    @Override  
    public IBinder onBind(Intent intent) {  
        return null;  
    }  
  
    @Override  
    public void onCreate() {  
        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);  
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        KLog.e("service_log","----onStartCommand------------");
        try {
            if (locationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
                KLog.e("service_log", "----NETWORK_PROVIDER------------");
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
            } else if (locationManager.getProvider(LocationManager.GPS_PROVIDER) != null) {
                KLog.e("service_log", "----GPS_PROVIDER------------");
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
            } else {
                Toast.makeText(this, "无法定位", Toast.LENGTH_SHORT).show();
                Intent intentCallback = new Intent();
                intentCallback.setAction(LocationBean.LOCATION_ACTION);
                intentCallback.putExtra(LocationBean.LOCATION, "");
                sendBroadcast(intent);
                // 如果只是需要定位一次，这里就移除监听，停掉服务。如果要进行实时定位，可以在退出应用或者其他时刻停掉定位服务。
                locationManager.removeUpdates(this);
                stopSelf();
            }
        }catch (Exception e){
            Toast.makeText(this, "无法定位", Toast.LENGTH_SHORT).show();
            Intent intentCallback = new Intent();
            intentCallback.setAction(LocationBean.LOCATION_ACTION);
            intentCallback.putExtra(LocationBean.LOCATION, "");
            sendBroadcast(intent);
            // 如果只是需要定位一次，这里就移除监听，停掉服务。如果要进行实时定位，可以在退出应用或者其他时刻停掉定位服务。
            locationManager.removeUpdates(this);
            stopSelf();
        }
        return START_NOT_STICKY;
    }

//    @Override
//    public void onStart(Intent intent, int startId) {
//
//    }
  
    @Override  
    public boolean stopService(Intent name) {  
        return super.stopService(name);  
    }  
  
    @Override  
    public void onLocationChanged(Location location) {
        KLog.e("service_log","----onLocationChanged------------");
        //经纬度改变的回调方法，基本都
        // 是使用这个回调方法
        //通知Activity  
        Intent intent = new Intent();
        intent.setAction(LocationBean.LOCATION_ACTION);
        intent.putExtra(LocationBean.LOCATION, location.toString());
        sendBroadcast(intent);
        // 如果只是需要定位一次，这里就移除监听，停掉服务。如果要进行实时定位，可以在退出应用或者其他时刻停掉定位服务。
        locationManager.removeUpdates(this);  
        stopSelf();  
    }  
  
    @Override  
    public void onProviderDisabled(String provider) {
        //提供者（网络或GPS）被关闭的回调方法
    }
  
    @Override  
    public void onProviderEnabled(String provider) {
    }
  
    @Override  
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
  
}  